home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / prodpack.zip / DB4PPSRC.EXE / DLGHEVL.PRG < prev    next >
Text File  |  1993-05-25  |  5KB  |  207 lines

  1. FUNCTION DlgHeVl
  2. PARAMETER p__val
  3.   PRIVATE lValidOk, lExact
  4.   lValidOk = .T.
  5.   lExact = SET( "EXACT" ) = "ON"
  6.   SET EXACT ON
  7.  
  8.   DO CASE
  9.  
  10.     *-------------------------
  11.     *-- Validation for DLGHelp
  12.     *-------------------------
  13.     CASE p__val = "BT_EDIT"
  14.       DLGEDIT[ 1 ]     = hlp_title
  15.       DLGEDIT[ 2 ]     = hlp_headng
  16.       gcHelpFile = "HLP_TEXT." + TRANSFORM( RECNO(), "@L 999" )
  17.       FXL_CANCEL = .F.
  18.       DO DlgEdit
  19.       IF .NOT. FXL_CANCEL
  20.         REPLACE hlp_title WITH DLGEDIT[ 1 ], ;
  21.                 hlp_headng WITH DLGEDIT[ 2 ]
  22.         IF FILE( gcHelpFile )
  23.           APPEND MEMO Hlp_Text FROM ( gcHelpFile ) OVERWRITE
  24.         ENDIF
  25.       ENDIF
  26.       ERASE ( gcHelpFile )
  27.  
  28.     CASE p__val = "BT_CONT"             && Table of Contents
  29.       SET KEY TO
  30.       gc_file = TRIM( hlp_file )
  31.       gc_name = ""
  32.       gnLevel = 2
  33.       gnBarSel = -1
  34.       DLGCONT[ 1 ] = 0
  35.       TI_TEXT = Hlp_Title
  36.       FXL_CANCEL = .F.
  37.       btCont1st = .T.
  38.       DO DlgCont
  39.       IF .NOT. FXL_CANCEL
  40.         IF gnBarSel > 0
  41.           GO TOP
  42.           SKIP gnBarSel - 1
  43.           SET KEY TO
  44.           gc_file = TRIM( hlp_file )
  45.           gnMemo = 1
  46.           DO DlgSetHp
  47.           DO DlgDsHe
  48.           TI_TEXT = HelpCTit( TRIM( hlp_headng ), 51, .T. )
  49.           DO TStatic WITH WM_PAINT, BN_HILITE, GetId( "TI_TEXT" )
  50.           TI_TEXT = TRIM( hlp_headng )
  51.         ENDIF
  52.       ENDIF
  53.  
  54.     CASE p__val = "BT_PGUP"
  55.       IF gnMemo > 1
  56.         gnMemo = MAX( gnMemo - 17, 1 )
  57.       ENDIF
  58.       DO DlgSetHp
  59.       DO DlgDsHe
  60.  
  61.     CASE p__val = "BT_PGDN"
  62.       IF gnMemo > 1
  63.         gnMemo = gnMemo - 1
  64.       ENDIF
  65.       DO DlgSetHp
  66.       DO DlgDsHe
  67.  
  68.     CASE p__val = "BT_NEXT"
  69.       SET KEY TO
  70.       IF EOF()
  71.         GO TOP
  72.       ELSE
  73.         SKIP
  74.       ENDIF
  75.       gnMemo = 1
  76.       DO DlgSetHp
  77.       DO DlgDsHe
  78.       TI_TEXT = HelpCTit( TRIM( hlp_headng ), 51, .T. )
  79.       DO TStatic WITH WM_PAINT, BN_HILITE, GetId( "TI_TEXT" )
  80.       TI_TEXT = TRIM( hlp_headng )
  81.  
  82.     CASE p__val = "BT_PREV"
  83.       SET KEY TO
  84.       IF BOF()
  85.         GO BOTTOM
  86.       ELSE
  87.         SKIP - 1
  88.       ENDIF
  89.       gnMemo = 1
  90.       DO DlgSetHp
  91.       DO DlgDsHe
  92.       TI_TEXT = HelpCTit( TRIM( hlp_headng ), 51, .T. )
  93.       DO TStatic WITH WM_PAINT, BN_HILITE, GetId( "TI_TEXT" )
  94.       TI_TEXT = TRIM( hlp_headng )
  95.  
  96.     *-------------------------
  97.     *-- Validation for DLGCont
  98.     *-------------------------
  99.     CASE p__val = "LB_CONT_1"
  100.  
  101.       DO CASE
  102.         CASE TYPE( "pn_msg" ) = "N" .AND. pn_msg = LBN_DBLCLK
  103.           *-----------------------
  104.           *-- ON SELECTION routine
  105.           *-----------------------
  106.           gnBarSel = nLB_CONT
  107.           nLB_CONT = 0
  108.           nAccel = GetId( "LB_CONT_1" ) && Force GetNext call to make popup
  109.  
  110.         CASE TYPE( "pn_msg" ) = "N" .AND. pn_msg = LBN_SELCHA
  111.           *-----------------------
  112.           *-- ON POPUP routine
  113.           *-----------------------
  114.  
  115.         CASE TYPE( "btCont1st" ) = "L" .AND. btCont1st
  116.           btCont1st = .F.
  117.  
  118.         CASE TYPE( "p__dir" ) = "N"
  119.           *--------------------------------
  120.           *-- Validation routine in GetNext
  121.           *--------------------------------
  122.           DO CASE
  123.             CASE gnLevel = 3            && Top level of contents
  124.               gnLevel = 2
  125.               GO TOP
  126.               IF gnBarSel > 0
  127.                 GO TOP
  128.                 SKIP gnBarSel - 1
  129.                 gc_file = TRIM( hlp_file )
  130.                 gc_name = ""
  131.                 DO TList WITH WM_PAINT, WM_DRAWITEM, GetId( "LB_CONT_1" )
  132.                 nCurrent = GetId( "LB_CONT_1" )
  133.                 lValidOk = .F.
  134.                 gnBarSel = -1
  135.               ENDIF
  136.             CASE gnLevel = 2            && Mid level of contents
  137.               gnLevel = 1
  138.               nMess = DLN_OK
  139.  
  140.           ENDCASE
  141.  
  142.       ENDCASE
  143.  
  144.     CASE p__val = "BT_UPLVL"  
  145.  
  146.       gnLevel = 3
  147.       nLB_CONT = 0
  148.       DO DlgHePop
  149.       SHOW POPUP LB_CONT_1
  150.       nCurrent = GetId( "LB_CONT_1" )
  151.       p__dir = nCurrent
  152.       nMess = KB_ENTER
  153.  
  154.  
  155.     *-------------------------
  156.     *-- Validation for DLGEdit
  157.     *-------------------------
  158.     CASE p__val = "BT_EDITFR"
  159.       IF RLOCK()
  160.         nMemLines = MEMLINE( Hlp_Text )
  161.         nLine = 1
  162.         lOk = .T.
  163.         IF .NOT. FILE( gcHelpFile )
  164.           lh = 0
  165.           lh = FCREATE( gcHelpFile )
  166.           IF lh > 0
  167.             DO WHILE nLine <= nMemLines
  168.               cLine = MLINE( Hlp_Text, nLine )
  169.               n = FPUTS( lh, cLine )
  170.               nLine = nLine + 1
  171.             ENDDO
  172.             IF FCLOSE( lh )
  173.             ENDIF
  174.           ELSE
  175.             lOk = .F.
  176.           ENDIF
  177.         ENDIF
  178.  
  179.         IF lOk
  180.           SAVE SCREEN TO EditFr
  181.           KEYBOARD [ ]
  182.           cDBEdit = HOME() + "DBEdit" 
  183.           ! &cDBEDIT &gcHelpFile 4 6 15 74
  184.           RESTORE SCREEN FROM EditFr
  185.           RELEASE SCREEN EditFr
  186.           gnMemo = 1
  187.           DO DlgSetHp                   && Set the help display lines
  188.           DO DlgDsHe                    && Now, display them
  189.         ELSE
  190.           DO _Err_Box WITH [Cannot create file: ] + gcHelpFile
  191.         ENDIF
  192.       ELSE
  193.         DO _Err_Box WITH [Record in use by another]
  194.       ENDIF
  195.  
  196.   ENDCASE
  197.  
  198.   IF lExact
  199.     SET EXACT ON
  200.   ELSE
  201.     SET EXACT OFF
  202.   ENDIF
  203.  
  204. RETURN( .t. )
  205. *-- EOF: DlgHeVl()
  206. 
  207.